home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / shell / ta / src / ta.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-05  |  2.7 KB  |  140 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <winb.h>
  5. #include <te.h>
  6. #include <fntb.h>
  7. #include <gui.h>
  8. #include <egb.h>
  9. #include <guidbg.h>
  10.  
  11. char    *guiEgbPtr ;            /*    EGB のワークアドレス    */
  12.  
  13. int    HyperID = -1 ;
  14.  
  15. #include <mos.h>
  16. //#include <eintm.h>
  17. //#define DEBUG
  18.  
  19. void ( *oldIdleTask )() ;
  20. void userIdleTask(void);        /*    登録するアイドルタスク    */
  21.  
  22. int userFunc(apliId, messId, info, data)
  23. int    apliId;
  24. int    messId;
  25. int    info;
  26. int    data;
  27. {
  28.     register int    ret;
  29.  
  30.     ret = ILLEGAL_FUNCTION;
  31.  
  32.     switch(messId)
  33.     {
  34.         case    GM_QUIT :
  35.             MMI_SetHaltFlag(TRUE);
  36.             ret = NOERR ;
  37.             break;
  38.     }
  39.  
  40.     return(ret);
  41. }
  42.  
  43. void main()
  44. {
  45.     static MMICTRL mmi ={
  46.                 SCREEN16 | SCREENIGNORE,    // ページ0側解像度
  47.                 SCREENUNUSED,                // ページ1側解像度
  48.                 0,                             // 書き込みページ
  49.                 SCREENAVAILABLE,             // 表示ページ
  50.                 0,                             // 表示プライオリティ
  51.                 SCREENAVAILABLE,            // 色数
  52.                 SCREENEXPAND,                 // VRAMの横の長さ
  53.                 0,                             // メモリ領域の大きさ
  54.                 NULL,                         // メモリ領域のアドレス
  55.                 0,                             // ユーザ領域の大きさ
  56.                 NULL,                         // ユーザ領域のアドレス
  57.                 0, 0,                         // 画面枠    lupx,lupy
  58.                 0, 0,                        //            rdwx,rdwy
  59.                 -16384, -16384,                // 移動枠    lupx,lupy
  60.                 16383, 16383,                //            rdwx,rdwy
  61.                 15,                         // 白色
  62.                 8,                          // 黒色
  63.                 7,                          // 灰色
  64.                 6                             // 反転色
  65.     };
  66.  
  67.     extern int APL_init() ;
  68.  
  69.     /*    初期化処理    */
  70.     if (MMI_Open( &mmi ) == NOERR)
  71.     {
  72.         /*    初期化に成功すればメインループに入る.    */
  73.         if (APL_init() == NOERR)
  74.             MMI_ExecSystem() ;
  75.     }
  76.  
  77.     /*    終了処理    */
  78.     MMI_Close() ;
  79.  
  80. }
  81.  
  82. int APL_init()
  83. {
  84.     extern MMIINIT    initDataGUI ;
  85.  
  86.     int    ret ;
  87.  
  88.     /*    EGB ワークアドレスの取得.    */
  89.     guiEgbPtr = MMI_GetEgbPtr() ;
  90.  
  91.     /*    ハイパ型部品の初期化            */
  92.     if ((ret = MMI_initHyper()) < 0)
  93.         return ret ;
  94.  
  95.     /*    背景データの初期化                        */
  96.  
  97.     /*    データの登録        */
  98.     if ((ret = MMI_Init(&initDataGUI)) < 0)
  99.         return ret ;
  100.  
  101.     /*    背景を表示する                            */
  102. //    MMI_SendMessage(MMI_GetBaseObj(), MM_SHOW, 0) ;
  103.  
  104.     MMI_SendMessage(MMI_GetBaseObj(), MM_SETEXEC, 1, userFunc);
  105.     ret = MMI_GetApliId();
  106.     MMI_CallMessage(ret, GM_TITLE, (int)"た                              By 機拡", 0);
  107.  
  108.     MMI_CallMessage(ret, GM_SLEEP, 0, 0 );
  109.  
  110.     extern void    userIdleTask();                    //    登録するアイドルタスク
  111.     MMI_SetIdleTaskFunc( userIdleTask );
  112.  
  113.     return NOERR ;
  114. }
  115.  
  116. void userIdleTask(void)
  117. {
  118.     int i,mx,my;
  119.     MOS_rdpos( &i, &mx, &my );
  120.  
  121.     if(mx==0 && my==0)
  122.     {
  123.         i = MMI_GetApliId();
  124.         if(i!=MMI_CallMessage(i, GM_QUERYID, QM_ALLKIND, 1 ))
  125.         {
  126.             MMI_CallMessage(i, GM_WAKE, 0, 0 );
  127.             #ifdef DEBUG
  128.             printf("show task\n");
  129.             #endif
  130.             MMI_CallMessage(i, GM_TASKLIST, 0, 0 );
  131.         }
  132.     }
  133.     #ifdef DEBUG
  134.     else printf("Idle task\n");
  135.     #endif
  136.  
  137.     return ;
  138. }
  139.  
  140.